/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package menadzery;

import Helpers.Karty;
import java.awt.Font;
import java.util.Collections;
import java.util.Vector;
import obiekty.Karta;
import obiekty.Konto;

/**
 *
 * @author sufka
 */
public class Gracz {

    private String login;
    private Konto konto;
    private Integer aktualnaStawka;
    private Vector<Karta> karty;//pięć kart w ręku gracza
    private Integer stanowiskoPrzyStole;

    public Konto getKonto() {
        return konto;
    }

    public void setKonto(Konto konto) {
        this.konto = konto;
    }


    public Vector<Karta> getKarty() {
        return karty;
    }

    public Integer getStanowiskoPrzyStole() {
        return stanowiskoPrzyStole;
    }

    public void setStanowiskoPrzyStole(Integer stanowiskoPrzyStole) {
        this.stanowiskoPrzyStole = stanowiskoPrzyStole;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public void setStanKonta(Integer ile) {
        konto.setStanKonta(ile);
    }

    public void zwiekszStanKonta(Integer ile) {
        konto.dodajDoKonta(ile);
    }

    public Integer getStanKonta() {
        return konto.getStanKonta();
    }

    public void setAktualnaStawka(Integer stawka) {
        this.aktualnaStawka = stawka;
    }

    public void nowaTura() {
        this.aktualnaStawka = 0;
        for (int i = 0; i < 5; ++i) {
            karty.elementAt(i).wyczysc();
        }
    }

    public Integer koniecTury() {
        konto.odejmijOdKonta(aktualnaStawka);
        return new Integer(konto.getStanKonta());
    }

    public Integer podajHierarchie() {
        Vector<Integer> v = new Vector<Integer>();
        for (int i = 0; i < 5; ++i) {//bo 5 kart
            v.add(karty.elementAt(i).getKtora());
        }
        return Karty.numerHierarchii(v);
    }

    public void dodajKarte(Integer nrKarty, Integer ktoraWReku) {
        karty.elementAt(ktoraWReku).setKtora(nrKarty);
        karty.elementAt(ktoraWReku).setOdkryta(true);
    }
    public void posortujKarty() {
        Vector<Integer> v = new Vector<Integer>();
        for (int i = 0; i < 5; ++i) {
            v.add(karty.elementAt(i).getKtora());
        }
        Collections.sort(v);
        for (int i = 0; i < 5; ++i) {
            karty.elementAt(i).setKtora(v.elementAt(i));
        }
    }

    public String podajKarty(){
        String moje = "";
        for(int i = 0; i < 5; ++i){
            if( karty.elementAt(i).getKtora() < 10 ) moje += "0"+karty.elementAt(i).getKtora();
            else moje += karty.elementAt(i).getKtora();
        }
        return moje;
    }

    public String wypiszKarty() {
    //    System.out.print("Twoje karty: ");
    //    for (int i = 0; i < this.karty.size(); ++i) {
    //        Integer numerKarty = this.karty.elementAt(i).getKtora();
    //        System.out.print(i + 1 + ") " + Karty.wypiszFigure(numerKarty) + " " + Karty.wypiszKolor(numerKarty) + "  ");
    //    }
    //    System.out.println();

        Vector<Integer> v = new Vector<Integer>();
        for (int i = 0; i < 5; ++i) {//bo 5 kart
            v.add(karty.elementAt(i).getKtora());
        }
        int numerHierarchii = Karty.numerHierarchii(v);
        String hierarchia = Karty.hierarchia(numerHierarchii);
        return "Uklad: " + hierarchia.toUpperCase();
    }

    public void ustawDoWymiany(Integer ktoraKartaZReki) {
        karty.elementAt(ktoraKartaZReki).setDoWymiany(true);
    }

    public Integer pokazKarte(Integer ktoraKartaZReki) {
        return karty.elementAt(ktoraKartaZReki).getKtora();
    }

    public void usunWybraneKarty() {
        int k = 0;
        int ilosc = 5;
        while (k < ilosc) {
            if (this.karty.elementAt(k).isDoWymiany()) {
                this.karty.remove(k);
                --ilosc;
            } else {
                ++k;
            }
        }
    }

    public void ustawKarty(Integer ktoryPanel) {

        
        if (ktoryPanel == 0) {
            for (int i = 0; i < 5; ++i) {
                karty.elementAt(i).setPozX(10 + 80 * i);
                karty.elementAt(i).setPozY(40);
                karty.elementAt(i).setOdkryta(true);
            }
        } else if (ktoryPanel == 2) {
            for (int i = 0; i < 5; ++i) {
                karty.elementAt(i).setPozX(10 + 80 * i);
                karty.elementAt(i).setPozY(40);
            }
        } else if (ktoryPanel == 1 || ktoryPanel == 3) {
            karty.elementAt(0).setPozX(10);
            karty.elementAt(0).setPozY(60);

            karty.elementAt(1).setPozX(70);
            karty.elementAt(1).setPozY(110);

            karty.elementAt(2).setPozX(10);
            karty.elementAt(2).setPozY(160);

            karty.elementAt(3).setPozX(70);
            karty.elementAt(3).setPozY(210);

            karty.elementAt(4).setPozX(10);
            karty.elementAt(4).setPozY(260);
        }
    }

    public Gracz() {
        this.login = "";
        konto = new Konto();
        karty = new Vector<Karta>();
        karty.add(new Karta());
        karty.add(new Karta());
        karty.add(new Karta());
        karty.add(new Karta());
        karty.add(new Karta());
        stanowiskoPrzyStole = new Integer(-1);
    }

    public Gracz(String login) {
        this.login = login;
        konto = new Konto();
        karty = new Vector<Karta>();
        karty.add(new Karta());
        karty.add(new Karta());
        karty.add(new Karta());
        karty.add(new Karta());
        karty.add(new Karta());
        // karty.add(new Karta(33));
        stanowiskoPrzyStole = new Integer(-1);

    }
}
